package com.smap.core;

import java.util.List;

import com.google.gwt.canvas.dom.client.Context2d;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Widget;
import com.smap.control.ToolBar;

public interface Map {

	public AbsolutePanel getRoot();

	public AbsolutePanel getRootFront();

	public double getResolution();

	public XY getCentre();

	public int getZoom();

	public Bbox getExtent(int width, int height);

	public void add(Widget widget, int x, int y);

	public Projection getProj();

	public void fireEvent(GwtEvent<?> event);

	public <H extends EventHandler> HandlerRegistration addHandler(H handler,
			GwtEvent.Type<H> type);

	void zoom(XY coord, Integer zoom);

	Context2d getScreen();

	void setCursor(String string);

	void setScreenOffset(int offsetX, int offsetY);

	int getWidth();

	int getHeight();

	public void zoomTo(int[] rect);

	void zoomOut();

	void zoomIn();

	void updateLocation();

	XY pixelToMap(XY xy);

	XY mapToPixel(XY xy);

	void zoomByLonLat(Double x, Double y, Integer zoom);

	void draw(boolean b);

	List<Layer> getLayers();

	List<Marker> getMarkers();

	void addControl(Control navigateControl);

	void addLayer(Layer baseLayer);

	void addMarker(Marker marker);

	public void command(String cmd);

	public ToolBar getToolBar();


}
